clear;clc;
close all;
A=zeros(64,64); 
A(32-20:32+20,32-8:32+8)=255; 
subplot(1,4,1); 
imshow(A); 
title('原图');
s0=fftshift(fft2(A));
s1=fftshift(fft2(A));
s2=fftshift(fft2(A));
[M,N]=size(s0); 
n1=floor(M/2);                     %对M/2进行取整 
n2=floor(N/2); 
d0=5;
d1=50;
for i=1:M           
    for j=1:N     
       d=sqrt((i-n1)^2+(j-n2)^2);       %点（i,j）到傅立叶变换中心的距离           
       h=1*exp(-1/2*(d^2/d0^2));        %GLPF滤波函数
       h1=1*exp(-1/2*(d^2/d1^2));       %GLPF滤波函数 
       h2=1/(1+0.414*(d/d0)^(2*2));
       s0(i,j)=h*s0(i,j);               %GLPF滤波后的频域表示                 
       s1(i,j)=h1*s1(i,j);              %GLPF滤波后的频域表示
       s2(i,j)=h2*s2(i,j);
    end
end
s0=ifftshift(s0);                            
s0=uint8(real(ifft2(s0)));    
subplot(1,4,2);                      %创建图形图像对象 
imshow(s0);
title('理想低通滤波器 d=5的结果');
s1=ifftshift(s1);                            
s1=uint8(real(ifft2(s1)));    
subplot(1,4,3);                      %创建图形图像对象 
imshow(s1);
title('理想低通滤波器 d=50的结果');
s2=ifftshift(s2);                            
s2=uint8(real(ifft2(s2)));    
subplot(1,4,4);                      %创建图形图像对象 
imshow(s2);
title('Butterworth 低通滤波器的结果');
